Image processing in computer systems typically allow a user viewing an image to zoom to different resolutions of the image. Further, the user can rotate the image view, and pan around the image at the different zoom levels. One method of processing image data is to organize the data into multiple levels of resolution. Each level can then be used to draw an image at a specified zoom level.
Problems with real-time image display are often experienced when panning and zooming between resolution levels. These problems are manifested by slowing or ‘freezing’ an image on a screen until the data can be loaded into a graphics processor and displayed at the specified image resolution level.
The available texture memory on a graphics processing unit (GPU) is less than what would be needed to store an entire high resolution image. Also, there is a maximum texture size (e.g., width and height) which is often less than the image size. Therefore, the entire image cannot be stored in texture at once, either in one contiguous piece, or in tiled chunks.
A memory transfer speed (bandwidth) between main memory and the GPU limits how much data can be sent per frame. Therefore, some form of texture cache is warranted since a number of “new” pixels per frame is a lot less than the total number of pixels drawn per frame. A GPU may have a built in mechanism for drawing an image at varying zoom levels called a mip map. Utilizing the GPU mip maps for high resolution images may not be needed or desired.
Mip maps are not necessary within a single drawing operation if the image is oriented strictly perpendicular to the viewing axis. This is because the projected size of an image pixel on the screen is constant across the screen. This would be different if an image were viewed in perspective, or draped over a terrain. Mip maps require extra storage and extra processing to dynamically generate an image. Further, in order to ensure there are no tile seam artifacts at all mip map levels, it would be need to substantially increase a resample border. For instance, a 6 layer mip map with a resample border of 1 pixel, would require a resample border of 64 pixels at the bottom level of the mip map. This drastically reduces the effective area of each tile, therefore requiring more tiles, and making the whole system less efficient.